// 引入 vuex
import Vuex from 'vuex'
import Vue from 'vue'
import state from './state'
import getters from './getters'
Vue.use(Vuex)

// 创建仓库
const store = new Vuex.Store({

  // 初识化数据，原始数据在这里-类比组件的data
  state,
  // 对state中的数据进行深加工，类比computed
  getters,
  // commit一个mutations，这是修改vuex中数据的唯一方法
  mutations: {
    // 长大了一岁
    grow(state) {
      state.age++
    },
    // 升职加薪
    add(state, payload) {
      console.log(payload);
      state.money += payload.num
    }
  },
  actions: {
    asyncAdd(context, payload) {
      console.log(payload);
      // context:上下文，就是当前的语境
      // 最后，还是通过mutations来修改数据
      context.commit('add', payload)
    },
    // async myPoint({ commit }) {
    //   commit('gotPoint', await getData())
    // },
    // async myLevel({ dispatch, commit }) {
    //   await dispatch('myPoint') // 等待 myPoint 完成
    //   commit('gotOtherData', await getOtherData())
    // }
  }

})

export default store